#ifndef RAYCASTER_HPP
#define RAYCASTER_HPP
#include <cmath>
#include "grade.hpp"
#include "raio.hpp"
#include "cena.hpp"
#include "vetor.hpp"
#include "cor.hpp"
#include "iluminacao.hpp"
#include "tga.hpp"

using namespace std;

class Raycaster {
public:
	Raycaster(Cena*,Grade*,const Vetor&,const Vetor&,const unsigned short,const unsigned short,const unsigned short);
	~Raycaster(void);

	Tga* cast(void) const;

	void setCena(Cena*);
	void setGrade(Grade*);
	void setPosicao(Vetor);
	void setUp(Vetor);
	void setAltura(int);
	void setLargura(int);	

	Cena* getCena(void) const;
	Grade* getGrade(void) const;
	Vetor getPosicao(void) const;
	Vetor getUp(void) const;
	int getAltura(void) const;
	int getLargura(void) const;

private:
	Cena* cena;
	Grade* grade;
	Iluminacao iluminacao;
	Vetor posicao;
	Vetor up;
	unsigned short altura,largura;
	unsigned short profundidade;
	
	
};


#endif
